package api

import (
	"github.com/gin-gonic/gin"

	"BookStack/internal/interfaces/middleware"
	"BookStack/internal/interfaces/presenter"
)

// RegisterRoutes 注册所有路由
func RegisterRoutes(router *gin.Engine, handlers *Handlers) {
	// 创建响应格式化器
	formatter := presenter.NewResponseFormatter()

	// 注册全局中间件
	router.Use(middleware.ErrorHandler(formatter))
	router.Use(middleware.RecoveryHandler(formatter))

	// API版本
	v1 := router.Group("/api/v1")

	// 注册用户模块路由
	handlers.UserHandler.RegisterRoutes(v1)

	// 注册文章模块路由
	handlers.ArticleHandler.RegisterRoutes(v1)

	// 注册书籍模块路由
	handlers.BookHandler.RegisterRoutes(v1)
	handlers.BookChapterHandler.RegisterRoutes(v1)
	handlers.BookRecycleHandler.RegisterRoutes(v1)

	// 注册自定义页面模块路由
	handlers.PageHandler.RegisterRoutes(v1)

	// 注册分类模块路由
	handlers.CategoryHandler.RegisterRoutes(v1)

	// 注册标签模块路由
	handlers.TagHandler.RegisterRoutes(v1)

	// 注册导航模块路由
	handlers.NavigationHandler.RegisterRoutes(v1)

	// TODO: 注册其他模块路由
	// handlers.CommentHandler.RegisterRoutes(v1)

	// 健康检查
	router.GET("/health", func(c *gin.Context) {
		formatter.Success(c, gin.H{"status": "ok"})
	})
}
